/*
 * @Author jiangzhiwei
 * @Date 2023-07-23 17:34:25
 * @LastEditors jiangzhiwei
 * @LastEditTime 2023-07-28 11:32:50
 * @FilePath \test-cron\src\components\yc-cron\components\options\mixins\optionmixin.js
 * @Description 选项混入
 */
import { emitValue } from '../../../utils/componentutil'
import { VALUE_NAME, EXPRESSION_EMIT_NAME } from '../../../utils/constant'

export default {
  props: {
    /** 当前所选项的label */
    [VALUE_NAME]: {
      type: [String, Number, Boolean],
      default: undefined
    },
    /** radio的label */
    label: {
      type: [String, Number, Boolean],
      default: undefined
    },
    /** 内容描述 */
    descriptions: {
      type: Array,
      default: () => []
    },
    /** cron表达式类型linux/spring/quarts */
    type: {
      type: String,
      default: undefined
    },
    /** 当前面板所对应的表达式的值 */
    expression: {
      type: String,
      default: undefined
    }
  },
  methods: {
    /** 选项发生变化 */
    onInput (value) {
      emitValue(this, value)
      this.emitExpression()
    },
    /** 尝试emit cron表达式 */
    tryEmitExpression () {
      this.$nextTick(() => {
        if (this[VALUE_NAME] === this.label) { // 如果当前选项选中
          this.emitExpression()
        }
      })
    },
    /** emit选项所对应的cron表达式 */
    emitExpression () {
      emitValue(this, this.getExpression(), EXPRESSION_EMIT_NAME)
    },
    /** 获取对应cron表达式 */
    getExpression () {
      window.console.error('获取该选项对应的cron表达式的方法未实现')
    },
    /** 取消选中 */
    tryCancelCheck () {
      this.$nextTick(() => {
        if (this[VALUE_NAME] === this.label) { // 当前选项选中
          emitValue(this, -1)
        }
      })
    }
  }
}
